package triviaException;

/**
 * Excepciones inherentes a la Trivia
 * @author Grupo 11 de Programacion Orientada a Objetos
 */

public class TriviaException extends Exception{
	
	private static final long serialVersionUID = 1L;

	/**
	 * Crea una nueva instancia de la excepción TriviaException
	 * sin ningun mensaje definido
	 */
	
	public TriviaException(){
		super();
	}
	
	/**
	 * Crea una nueva instancia de la excepción TriviaException
	 * @param message - mensaje arrojado por la excepción 
	 */
	
	public TriviaException( String message){
		super(message);
	}
	
	/**
	 * Ocurre cuando existen preguntas repetidas en el archivo
	 * de preguntas
	 */
	
	public TriviaException repeatException(){
		TriviaException exception = new TriviaException("Error: el valor ya existe");
		return exception;
	}
	
	/**
	 * Ocurre cuando no todas las categorías contienen como mínimo 10 preguntas.
	 */
	
	public TriviaException notEnoughtQuestion(){
		TriviaException exception = new TriviaException("Error: cada categoria debe poseer 10 preguntas" +
				" como minimo");
		return exception;
	}
	
	/**
	 * Ocurre cuando el número identificador de tipo de preguntas (Boolean, Numerical, etc)
	 * no es válido
	 */
	
	public TriviaException typeQuestionExcepcion(){
		TriviaException exception = new TriviaException("Error: el valor no corresponde a un tipo de" +
				" pregunta valido");
		return exception;
	}
	
	
	/**
	 * Ocurre cuando la dificultad de una pregunta es inválida
	 */
	
	public TriviaException difficultyException(){
		TriviaException exception = new TriviaException("Error: el valor no corresponde a un tipo de" +
				" dificultad valido");
		return exception;
	}
	
	/**
	 * Ocurre cuando se asigna un puntaje negativo
	 */
	
	public TriviaException valueException(){
		TriviaException exception = new TriviaException("Error: el valor debe ser positivo");
		return exception;
	}
	
	/**
	 * Ocurre cuando el texto de la pregunta es inválido (vacio, "")
	 */
	
	public TriviaException noQuestionException(){
		TriviaException exception = new TriviaException("Error: la pregunta no puede ser un string vacio");
		return exception;
	}
	
	/**
	 * Ocurre cuanto la cantidad de respuestas en el archivo es indicada como multiples
	 * y solo hay una
	 */
	
	public TriviaException rightOpException(){
		TriviaException exception = new TriviaException("Error: las opciones de respuestas deben ser " +
				" multiples");
		return exception;
	}
	
	/**
	 * Ocurre cuando se esperaba una pregunta de tipo boolean y la respuesta no es ni
	 * "verdadero" ni "falso"
	 */
	
	public TriviaException notBooleanException(){
		TriviaException exception = new TriviaException("Error: no se recibio un boolean");
		return exception;
	}
	
	/**
	 * Ocurre cuando las preguntas no fueron separadas correctamente en el archivo
	 * de preguntas
	 */
	
	public TriviaException notSeparatorException(){
		TriviaException exception = new TriviaException("Error: la linea divisoria de preguntas incorrecta");
		return exception;
	}
	
	/**
	 * Ocurre en las preguntas de múltiple opción cuando las respuestas correctas, al menos
	 * una difiere de las posibles opciones.
	 */
	
	public TriviaException invalidAnswerException(){
		TriviaException exception = new TriviaException("Error: las opciones son diferentes a las" +
				" respuestas correctas");
		return exception;
	}
}
